package com.jzo2o.common.constants;

/**
 * 消息队列（MQ）常量接口，统一管理MQ相关的配置常量，包括延迟参数、交换机、队列及路由键等
 */
public interface MqConstants {
    /**
     * 默认延时时间（-1表示不延迟）
     */
    int DEFAULT_DELAY = -1;

    /**
     * 低延迟时间：5秒（单位：毫秒）
     */
    int LOW_DELAY = 5000;

    /**
     * 标准延迟时间：10秒（单位：毫秒）
     */
    int NORMAL_DELAY = 10000;

    /**
     * 延迟交换机关键字（用于标识延迟类型交换机）
     */
    String DELAYED_KEYWORD = "delayed";

    /**
     * 延迟队列标识（表示当前队列是否为延迟队列）
     */
    String DELAYED = "true";

    /**
     * 消息交换机定义
     * 约定：1. 交换机类型均为topic；2. 延迟队列对应的交换机命名以.delayed结尾
     */
    interface Exchanges {

        /**
         * 交易（支付）相关交换机
         */
        String TRADE = "jzo2o.exchange.topic.trade";

        /**
         * 评分相关交换机
         */
        String EVALUATION_SCORE = "evaluation.score";
    }

    /**
     * 消息队列定义
     */
    interface Queues {

        /**
         * 订单微服务：用于接收支付状态更新消息的队列
         */
        String ORDERS_TRADE_UPDATE_STATUS = "jzo2o.queue.orders.trade.update.Status";

        /**
         * 客户微服务：用于接收积分统计消息的队列
         */
        String SCORE_STATISTICS = "jzo2o.queue.customer.score.statistics";
    }

    /**
     * 路由键定义（用于交换机与队列的绑定匹配）
     */
    interface RoutingKeys {

        /**
         * 交易模块：支付状态更新路由键
         */
        String TRADE_UPDATE_STATUS = "UPDATE_STATUS";

        /**
         * 评分模块：积分统计路由键
         */
        String SCORE_STATISTICS = "evaluation.score.statistics";
    }
}
